6.6.1. İki Yönlü Listeye Ekleme İşlemi

İki-yönlü listeye ekleme yapılırken hem ön hem arkada olan düğümlere bağlantı kurulmalıdır. Düğüm eklerken dikkat edilmesi gereken önemli nokta ilk ekleme işleminin farklı olmasıdır. Aşağıdaki şekilde ekleme işlemi ilk düğüm için ve daha sonraki düğümler için ayrı ayrı gösterilmiştir. Bu işi kotaracak bir C fonksiyonu ise Fonksiyon-6.9.'da verildiği gibi olabilir.

Yukarıdaki fonksiyon kendisine gelen adresi, eklenecek düğümün bellekte tutulduğu adres olarak kabul edip iki-yönlü bağlantılı listeye ekler. Görüleceği gibi ilk önce liste üzerinde halıhazırda düğüm olup olmadığı sınanmıştır. Eğer düğüm varsa hemen if deyiminden sonraki satırlar, düğüm yok ise, bunun ilk ekleme olduğu varsayılarak else'den sonraki satırlar yürütülür.

int ekle(BLISTE2 *ki)
{
     if(ilk2!=NULL) {                   /* halıhazırda kayıt var mı ? */
               son2 >arka=ki;         /* arkaya bağla */
               ki >on=son2;           /* öne bağla */
               son2=ki;                 /* son düğüm yeni eklenen */
               son2 >arka=NULL;    /* son düğümün arkası NULL */
     }
else {                                   /* ilk düğüm ise burası yürütülür */
          ilk2=ki;                       /* ilk ve son düğüm aynı */
          son2=ki;
          ilk2 >arka=NULL;
          ilk2 >on=NULL;
     }
return 0;
}